1. Field
The present disclosure pertains to the field of computing and computing networks, and, more specifically, to the field of allocating information within a network switch or array of network switches.
2. Background
Networks of microprocessors, processor cores, or computers must often deal with the allocation of information among a number of sending and receiving processors, cores, or computers (referred to herein collectively as “agents” or “processing elements”). In some networks, a device or circuit, such as a router, may be used to allocate or direct information among a number of agents.
FIG. 1, for example, illustrates an array of agents that communicate with each other through a number of routers interconnecting the agents to each other. Although the array of agents illustrated in FIG. 1 each have a router associated therewith, in other array of agents, a router may be associated with more than one agent, such that the agents share a particular router. As mentioned above, the array illustrated in FIG. 1 may include processors, processor cores, computer systems, or some combination of these.
One challenge associated with an array of agents, such as the one illustrated in FIG. 1, may be the efficient allocation of information among the various agents. Efficient information routing may be further obscured if a router must route a number of inputs from one or more agents to a number of outputs in order to deliver information to one or more agents. FIG. 2, for example, illustrates a router that has five inputs and five outputs—four inputs and outputs for information from and to adjacent agents and one input and output for local information to be injected into the network and routed to agents within the network. Some prior art routers may have fewer or more inputs and outputs than those illustrated in FIG. 2.
One problem associated with routing information among a network of agents, such as the one illustrated in FIG. 1, via a router, such as the one illustrated in FIG. 2, is the efficient handling of conflicts that may arise among inputs and outputs of the router. Conflicts may result if the capacity of a switch or router is exceeded, reducing the ability of the switch/router to handle multiple streams of data concurrently. For example, a conflict may occur if data stream from an input port is to be sent to a number of different outputs at the same time.
Some information routing techniques address conflicts, such as the one described above, by merely choosing one of the outputs to accept the data and preventing the data to be sent to the other outputs, thereby requiring the data to be resubmitted by the sending agent. In some prior art routing techniques, the input data may not retain its priority after it has been denied access to an output and therefore must wait for other data on other inputs to be routed. This may result in reduced data throughput through the router and the network in general.